package com.hyt.it.ogt.ykcj.mapper.grade;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.hyt.it.ogt.ykcj.domain.grade.GradeAnalysisData;
import com.hyt.it.ogt.ykcj.domain.vo.ExportParamVo;
import com.hyt.it.ogt.ykcj.domain.vo.GradeAnalysisDataVo;
import com.hyt.it.ogt.ykcj.domain.vo.export.ExportAnalysisDataBaseVo;
import com.hyt.it.ogt.ykcj.domain.vo.export.ExportAreaAnalysisDataVo;
import com.hyt.it.ogt.ykcj.domain.vo.export.ExportSubjectAnalysisDataVo;

/**
 * 考试成绩数据分析Mapper接口
 * 
 * @author admin
 * @date 2021-06-24
 */
public interface GradeAnalysisDataMapper 
{
    /**
     * 查询考试成绩数据分析
     * 
     * @param analysisId 考试成绩数据分析ID
     * @return 考试成绩数据分析
     */
    public GradeAnalysisData selectGradeAnalysisDataById(String analysisId);

    /**
     * 查询考试成绩数据分析列表
     * 
     * @param gradeAnalysisData 考试成绩数据分析
     * @return 考试成绩数据分析集合
     */
    public List<GradeAnalysisData> selectGradeAnalysisDataList(GradeAnalysisData gradeAnalysisData);

    /**
     * 新增考试成绩数据分析
     * 
     * @param gradeAnalysisData 考试成绩数据分析
     * @return 结果
     */
    public int insertGradeAnalysisData(GradeAnalysisData gradeAnalysisData);

    /**
     * 修改考试成绩数据分析
     * 
     * @param gradeAnalysisData 考试成绩数据分析
     * @return 结果
     */
    public int updateGradeAnalysisData(GradeAnalysisData gradeAnalysisData);

    /**
     * 删除考试成绩数据分析
     * 
     * @param analysisId 考试成绩数据分析ID
     * @return 结果
     */
    public int deleteGradeAnalysisDataById(String analysisId);

    /**
     * 批量删除考试成绩数据分析
     * 
     * @param analysisIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteGradeAnalysisDataByIds(String[] analysisIds);

    public void deleteGradeAnalysisData(@Param("examNameConfigId") String examNameConfigId, @Param("examYear") String examYear);

    public void batchInsertGradeAnalysisData(List<GradeAnalysisData> lsit);


    public List<GradeAnalysisDataVo> selectGradeAnalysisDataListByIdAndYear(@Param("examNameConfigId") String examNameConfigId, @Param("examYear") String examYear, @Param(
            "analysisType") String analysisType, @Param("examId") String examId);

    List<GradeAnalysisDataVo> selectGradeAnalysisDataListByIdAndYearList(
            @Param("examNameConfigId") String examNameConfigId,
            @Param("examYearList") List<String> examYearList,
            @Param("analysisType") String analysisType,
            @Param("examId") String examId);

    /**
     * 根据考试名称配置id查询最近两场考试信息
     * @param examNameConfigId
     * @param examId
     * @return
     */
    public List<GradeAnalysisDataVo> selectLatestTwoExamInfo(@Param("examNameConfigId") String examNameConfigId, @Param("examId") String examId);

    /**
     * 查询考试成绩地区分析列表
     * @param exportParamVo
     * @return
     */
    public List<ExportAreaAnalysisDataVo> selectExportAreaDataList(ExportParamVo exportParamVo);

    /**
     * 查询考试成绩科目分析列表
     * @param exportParamVo
     * @return
     */
    public List<ExportSubjectAnalysisDataVo> selectExportSubjectDataList(ExportParamVo exportParamVo);

    /**
     *
     * @param exportParamVo
     * @return
     */
    public List<ExportAnalysisDataBaseVo> selectExportRateDataList(ExportParamVo exportParamVo);

    public void deleteGradeAnalysisDataByExamId(@Param("examId") String examId);

}
